home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.Rectangle;
- import java.awt.image.FilteredImageSource;
- import java.awt.image.ImageObserver;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.NoSuchElementException;
- import java.util.StringTokenizer;
- import java.util.Vector;
-
- public final class ET_ScrollNews extends Applet implements Runnable {
- static final boolean REG_VERSION = false;
- // $FF: renamed from: RT java.lang.String
- static final String field_0 = "(This applet is not for commercial use. Visit http://www.entanke.se/ for information and more applets.)";
- static final String APPLETINFO = "ET Scroll News v1.1. Visit http://www.entanke.se/ for information and more applets.";
- static final String DEF_TEXT = "No TEXT parameter given.";
- static final URL DEF_URL = null;
- static final String DEF_TARGETFRAME = "_self";
- static final String DEF_ALT = null;
- static final String DEF_ALIGN = "Center";
- static final int DEF_BREAK = 20;
- static final int DEF_COLOR = 0;
- static final int DEF_OVERCOLOR = 255;
- static final int DEF_CLICKCOLOR = 16711680;
- static final int DEF_BGCOLOR = 16777215;
- static final URL DEF_BGIMAGE = null;
- static final URL DEF_FGIMAGE = null;
- static final String DEF_FONTNAME = "TimesRoman";
- static final int DEF_FONTSIZE = 13;
- static final int DEF_FONTSTYLE = 0;
- static final int DEF_UPDATEDELAY = 75;
- static final int DEF_UPDATEMOVE = 1;
- Image offScreenImage;
- Graphics offScreenGraphics;
- Graphics appletGraphics;
- private Thread kicker;
- Vector parText = new Vector();
- Vector parURL = new Vector();
- Vector parTargetFrame = new Vector();
- Vector parALT = new Vector();
- Vector parAlign = new Vector();
- Vector parBreak = new Vector();
- Vector parFont = new Vector();
- Rectangle parArea;
- URL parBGImage;
- URL parFGImage;
- Vector parColor = new Vector();
- Vector parOverColor = new Vector();
- Vector parClickColor = new Vector();
- Color parBGColor;
- Color parTextBGColor;
- int parUpdateDelay;
- int parUpdateMove;
- Image bgImage;
- Image fgImage;
- Vector textImage = new Vector();
- Vector textImageOver = new Vector();
- Vector textImageClick = new Vector();
- Vector showImage = new Vector();
- Vector showRect = new Vector();
- Vector showIndex = new Vector();
- private boolean updating = false;
- boolean mouseDown = false;
- int lastAltIndex;
- Event lastEvent;
- boolean isInited = false;
-
- public void init() {
- this.offScreenImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
- this.offScreenGraphics = this.offScreenImage.getGraphics();
- this.appletGraphics = ((Component)this).getGraphics();
- this.parBGColor = new Color(this.getIntegerParameter("BGColor", new Integer(16777215), 16));
- Integer var1 = this.getIntegerParameter("TextBGColor", (Integer)null, 16);
- if (var1 == null) {
- this.parTextBGColor = this.parBGColor;
- } else {
- this.parTextBGColor = new Color(var1);
- }
-
- this.offScreenGraphics.setColor(this.parBGColor);
- this.offScreenGraphics.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- FontMetrics var2 = this.offScreenGraphics.getFontMetrics(this.offScreenGraphics.getFont());
- this.offScreenGraphics.setColor(Color.gray);
- this.offScreenGraphics.drawString("(loading)", (((Component)this).size().width - var2.stringWidth("(loading)")) / 2, ((Component)this).size().height / 2);
- this.parBGImage = this.getURLParameter("BGImage", (URL)null);
- this.parFGImage = this.getURLParameter("FGImage", (URL)null);
- this.parArea = this.getAreaParameter("Area", new Rectangle(0, 0, ((Component)this).size().width, ((Component)this).size().height));
- this.parUpdateDelay = this.getIntegerParameter("UpdateDelay", new Integer(75), 10);
- this.parUpdateMove = this.getIntegerParameter("UpdateMove", new Integer(1), 10);
- boolean var3 = true;
-
- for(int var4 = 1; var3; ++var4) {
- if (var4 == 1) {
- this.parText.addElement(this.getStringParameter("Text1", "No TEXT parameter given."));
- this.parURL.addElement(this.getURLParameter("URL1", (URL)null));
- this.parTargetFrame.addElement(this.getStringParameter("TargetFrame1", "_self"));
- this.parALT.addElement(this.getStringParameter("ALT1", (String)null));
- this.parAlign.addElement(this.getStringParameter("Align1", "Center"));
- this.parBreak.addElement(this.getIntegerParameter("Break1", new Integer(20), 10));
- this.parColor.addElement(this.getIntegerParameter("Color1", new Integer(0), 16));
- this.parOverColor.addElement(this.getIntegerParameter("OverColor1", new Integer(255), 16));
- this.parClickColor.addElement(this.getIntegerParameter("ClickColor1", new Integer(16711680), 16));
- this.parFont.addElement(this.getFontParameter("FontName1", "FontStyle1", "FontSize1", new Font("TimesRoman", 0, 13)));
- } else if (this.getStringParameter("Text" + var4, (String)null) != null) {
- this.parText.addElement(this.getStringParameter("Text" + var4, (String)this.parText.elementAt(var4 - 2)));
- this.parURL.addElement(this.getURLParameter("URL" + var4, (URL)null));
- this.parTargetFrame.addElement(this.getStringParameter("TargetFrame" + var4, (String)this.parTargetFrame.elementAt(var4 - 2)));
- this.parALT.addElement(this.getStringParameter("ALT" + var4, (String)null));
- this.parAlign.addElement(this.getStringParameter("Align" + var4, (String)this.parAlign.elementAt(var4 - 2)));
- Vector var10000 = this.parBreak;
- String var5 = "Break" + var4;
- var10000.addElement(this.getIntegerParameter(var5, new Integer(20), 10));
- this.parColor.addElement(this.getIntegerParameter("Color" + var4, (Integer)this.parColor.elementAt(var4 - 2), 16));
- this.parOverColor.addElement(this.getIntegerParameter("OverColor" + var4, (Integer)this.parOverColor.elementAt(var4 - 2), 16));
- this.parClickColor.addElement(this.getIntegerParameter("ClickColor" + var4, (Integer)this.parClickColor.elementAt(var4 - 2), 16));
- this.parFont.addElement(this.getFontParameter("FontName" + var4, "FontStyle" + var4, "FontSize" + var4, (Font)this.parFont.elementAt(var4 - 2)));
- } else {
- var3 = false;
- }
- }
-
- }
-
- private Integer getIntegerParameter(String var1, int var2, int var3) {
- return this.getIntegerParameter(var1, new Integer(var2), var3);
- }
-
- private Integer getIntegerParameter(String var1, Integer var2, int var3) {
- String var4 = ((Applet)this).getParameter(var1);
-
- try {
- Integer var5 = new Integer(Integer.parseInt(var4, var3));
- return var5;
- } catch (NumberFormatException var6) {
- return var2;
- }
- }
-
- private String getStringParameter(String var1, String var2) {
- String var3 = ((Applet)this).getParameter(var1);
- return var3 == null ? var2 : var3;
- }
-
- private URL getURLParameter(String var1, URL var2) {
- String var3 = this.getStringParameter(var1, (String)null);
-
- try {
- URL var4 = new URL(((Applet)this).getDocumentBase(), var3);
- return var4;
- } catch (MalformedURLException var5) {
- return var2;
- }
- }
-
- private Rectangle getAreaParameter(String var1, Rectangle var2) {
- String var3 = this.getStringParameter(var1, (String)null);
- if (var3 == null) {
- return var2;
- } else {
- StringTokenizer var4 = new StringTokenizer(var3);
- return new Rectangle(Integer.parseInt(var4.nextToken()), Integer.parseInt(var4.nextToken()), Integer.parseInt(var4.nextToken()), Integer.parseInt(var4.nextToken()));
- }
- }
-
- private Font getFontParameter(String var1, String var2, String var3, Font var4) {
- String var5 = this.getStringParameter(var1, var4.getName());
- String var6 = this.getStringParameter(var2, "");
- int var7 = var4.getSize();
- var7 = this.getIntegerParameter(var3, new Integer(var7), 10);
- int var8 = var4.getStyle();
- if (var6.equalsIgnoreCase("Plain")) {
- var8 = 0;
- }
-
- if (var6.equalsIgnoreCase("Bold")) {
- var8 = 1;
- }
-
- if (var6.equalsIgnoreCase("Italic")) {
- var8 = 2;
- }
-
- if (var6.equalsIgnoreCase("BoldItalic")) {
- var8 = 3;
- }
-
- return new Font(var5, var8, var7);
- }
-
- public void makeTextVector(Vector var1, Vector var2, int var3, Integer var4, FontMetrics var5) {
- Color var6 = new Color(var4);
- Image var7 = ((Component)this).createImage(this.parArea.width, var5.getHeight() * var2.size());
- Graphics var8 = var7.getGraphics();
- Color var9 = null;
- if (this.parBGImage != null) {
- int var10 = var6.getRGB() & 16777215;
- int var11 = var10 >> 16 & 255;
- int var12 = var10 >> 8 & 255;
- int var13 = var10 & 255;
- if ((var11 + var12 + var13) / 3 > 128) {
- var9 = Color.black;
- } else {
- var9 = Color.white;
- }
-
- var8.setColor(var9);
- } else {
- var8.setColor(this.parTextBGColor);
- }
-
- var8.fillRect(0, 0, this.parArea.width, var5.getHeight() * var2.size());
- var8.setFont((Font)this.parFont.elementAt(var3));
- var8.setColor(var6);
-
- for(int var15 = 0; var15 < var2.size(); ++var15) {
- int var14;
- if (((String)this.parAlign.elementAt(var3)).equalsIgnoreCase("Left")) {
- var14 = 0;
- } else if (((String)this.parAlign.elementAt(var3)).equalsIgnoreCase("Right")) {
- var14 = this.parArea.width - var5.stringWidth((String)var2.elementAt(var15));
- } else {
- var14 = (this.parArea.width - var5.stringWidth((String)var2.elementAt(var15))) / 2;
- }
-
- var8.drawString((String)var2.elementAt(var15), var14, var5.getHeight() * var15 + var5.getAscent());
- }
-
- if (this.parBGImage != null) {
- FilteredImageSource var16 = new FilteredImageSource(var7.getSource(), new ET_TransFilter(var9.getRGB()));
- var1.addElement(((Component)this).createImage(var16));
- } else {
- var1.addElement(var7);
- }
- }
-
- public String getAppletInfo() {
- return "ET Scroll News v1.1. Visit http://www.entanke.se/ for information and more applets.";
- }
-
- public void start() {
- if (this.kicker == null) {
- this.kicker = new Thread(this);
- this.kicker.start();
- }
-
- }
-
- public void stop() {
- if (this.kicker != null && this.kicker.isAlive()) {
- this.kicker.stop();
- }
-
- this.kicker = null;
- }
-
- public void destroy() {
- this.kicker = null;
- }
-
- public final void update(Graphics var1) {
- if (!this.updating) {
- var1.drawImage(this.offScreenImage, 0, 0, this);
- }
-
- }
-
- private final void updateOffScreen() {
- this.updating = true;
- if (this.bgImage != null) {
- this.offScreenGraphics.drawImage(this.bgImage, 0, 0, this);
- }
-
- for(int var1 = this.showImage.size() - 1; var1 >= 0; --var1) {
- this.offScreenGraphics.drawImage((Image)this.showImage.elementAt(var1), ((Rectangle)this.showRect.elementAt(var1)).x, ((Rectangle)this.showRect.elementAt(var1)).y, this);
- }
-
- if (this.fgImage != null) {
- this.offScreenGraphics.drawImage(this.fgImage, 0, 0, this);
- }
-
- this.updating = false;
- }
-
- public final void paint(Graphics var1) {
- if (!this.updating) {
- var1.drawImage(this.offScreenImage, 0, 0, this);
- }
-
- }
-
- private void fixTextColors(Event var1) {
- if (var1 != null) {
- this.lastEvent = var1;
- }
-
- if (this.lastEvent != null) {
- int var2 = -1;
-
- for(int var3 = 0; var3 < this.showRect.size(); ++var3) {
- int var4 = (Integer)this.showIndex.elementAt(var3);
- Object var5 = null;
- if (((Rectangle)this.showRect.elementAt(var3)).inside(this.lastEvent.x, this.lastEvent.y) && this.parArea.inside(this.lastEvent.x, this.lastEvent.y) && this.parURL.elementAt(var4) != null) {
- if (this.lastEvent.id == 502) {
- ((Applet)this).getAppletContext().showDocument((URL)this.parURL.elementAt(var4), (String)this.parTargetFrame.elementAt(var4));
- }
-
- if (this.mouseDown) {
- var5 = this.textImageClick.elementAt(var4);
- } else {
- var5 = this.textImageOver.elementAt(var4);
- }
-
- var2 = var4;
- } else {
- var5 = this.textImage.elementAt(var4);
- }
-
- this.showImage.setElementAt(var5, var3);
- }
-
- if (this.lastAltIndex != var2) {
- if (var2 != -1 && this.parALT.elementAt(var2) != null) {
- ((Applet)this).showStatus((String)this.parALT.elementAt(var2));
- } else {
- ((Applet)this).showStatus("(This applet is not for commercial use. Visit http://www.entanke.se/ for information and more applets.)");
- }
- }
-
- this.lastAltIndex = var2;
- }
- }
-
- public boolean handleEvent(Event var1) {
- switch (var1.id) {
- case 501:
- this.mouseDown = true;
- this.fixTextColors(var1);
- return true;
- case 502:
- this.mouseDown = false;
- this.fixTextColors(var1);
- return true;
- case 503:
- case 504:
- case 505:
- case 506:
- this.fixTextColors(var1);
- return true;
- default:
- return super.handleEvent(var1);
- }
- }
-
- public void run() {
- if (!this.isInited) {
- Graphics var1 = this.appletGraphics;
- if (!this.updating) {
- var1.drawImage(this.offScreenImage, 0, 0, this);
- }
-
- for(int var11 = 0; var11 < this.parText.size(); ++var11) {
- Vector var2 = new Vector();
- StringTokenizer var3 = new StringTokenizer((String)this.parText.elementAt(var11), " ", true);
- FontMetrics var4 = this.appletGraphics.getFontMetrics((Font)this.parFont.elementAt(var11));
- String var5 = "";
- String var6 = "";
-
- try {
- while(true) {
- var6 = "";
- if (var4.stringWidth(var5) >= this.parArea.width) {
- var6 = var5;
- var5 = var3.nextToken();
- } else {
- while(var4.stringWidth(var6 + var5) < this.parArea.width) {
- var6 = var6 + var5;
- var5 = var3.nextToken();
- }
- }
-
- var2.addElement(var6.trim());
- }
- } catch (NoSuchElementException var10) {
- if (var6 != "") {
- var2.addElement(var6);
- }
-
- this.makeTextVector(this.textImage, var2, var11, (Integer)this.parColor.elementAt(var11), var4);
- this.makeTextVector(this.textImageOver, var2, var11, (Integer)this.parOverColor.elementAt(var11), var4);
- this.makeTextVector(this.textImageClick, var2, var11, (Integer)this.parClickColor.elementAt(var11), var4);
- }
- }
-
- MediaTracker var13 = new MediaTracker(this);
- this.bgImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
- Graphics var16 = this.bgImage.getGraphics();
- var16.setColor(this.parBGColor);
- var16.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- Image var18 = null;
-
- try {
- var18 = ((Applet)this).getImage(this.parBGImage);
- var13.addImage(var18, 1);
- } catch (NullPointerException var9) {
- }
-
- try {
- this.fgImage = ((Applet)this).getImage(this.parFGImage);
- var13.addImage(this.fgImage, 2);
- } catch (NullPointerException var8) {
- }
-
- try {
- var13.waitForAll();
- } catch (InterruptedException var7) {
- }
-
- if (var18 != null) {
- var16.drawImage(var18, 0, 0, this);
- } else {
- var16.setColor(this.parTextBGColor);
- var16.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- }
-
- this.updateOffScreen();
- Graphics var19 = this.appletGraphics;
- if (!this.updating) {
- var19.drawImage(this.offScreenImage, 0, 0, this);
- }
-
- this.offScreenGraphics.clipRect(this.parArea.x, this.parArea.y, this.parArea.width, this.parArea.height);
- Image var20 = (Image)this.textImage.firstElement();
- this.showImage.addElement(var20);
- this.showRect.addElement(new Rectangle(this.parArea.x, this.parArea.y + this.parArea.height, var20.getWidth((ImageObserver)null), var20.getHeight((ImageObserver)null)));
- this.showIndex.addElement(new Integer(0));
- this.isInited = true;
- }
-
- int var12 = 0;
-
- while(true) {
- this.fixTextColors((Event)null);
- this.updateOffScreen();
- Graphics var14 = this.appletGraphics;
- if (!this.updating) {
- var14.drawImage(this.offScreenImage, 0, 0, this);
- }
-
- for(int var15 = 0; var15 < this.showRect.size(); ++var15) {
- Rectangle var10000 = (Rectangle)this.showRect.elementAt(var15);
- var10000.y -= this.parUpdateMove;
- }
-
- if (((Rectangle)this.showRect.firstElement()).y + ((Rectangle)this.showRect.firstElement()).height < this.parArea.y) {
- this.showImage.removeElementAt(0);
- this.showRect.removeElementAt(0);
- this.showIndex.removeElementAt(0);
- }
-
- if (((Rectangle)this.showRect.lastElement()).y + ((Rectangle)this.showRect.lastElement()).height < this.parArea.height + this.parArea.y) {
- ++var12;
- if (var12 == this.textImage.size()) {
- var12 = 0;
- }
-
- Image var17 = (Image)this.textImage.elementAt(var12);
- this.showImage.addElement(var17);
- this.showRect.addElement(new Rectangle(this.parArea.x, ((Rectangle)this.showRect.lastElement()).y + ((Rectangle)this.showRect.lastElement()).height + (Integer)this.parBreak.elementAt((Integer)this.showIndex.lastElement()), var17.getWidth((ImageObserver)null), var17.getHeight((ImageObserver)null)));
- this.showIndex.addElement(new Integer(var12));
- }
-
- this.delay(this.parUpdateDelay);
- }
- }
-
- private void delay(int var1) {
- try {
- Thread.sleep((long)var1);
- } catch (InterruptedException var2) {
- }
- }
- }
-